.TH std::unique_ptr::~unique_ptr 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::unique_ptr::~unique_ptr \- std::unique_ptr::~unique_ptr

.SH Synopsis
   ~unique_ptr();  \fI(since C++11)\fP
                   (constexpr since C++23)

   If get() == nullptr there are no effects. Otherwise, the owned object is destroyed
   via get_deleter()(get()).

   Requires that get_deleter()(get()) does not throw exceptions.

.SH Notes

   Although std::unique_ptr<T> with the default deleter may be constructed with
   incomplete type T, the type T must be complete at the point of code where the
   destructor is called.

.SH Example

   The following program demonstrates usage of a custom deleter.


// Run this code

 #include <iostream>
 #include <memory>

 int main ()
 {
     auto deleter = [](int* ptr)
     {
         std::cout << "[deleter called]\\n";
         delete ptr;
     };

     std::unique_ptr<int, decltype(deleter)> uniq(new int, deleter);
     std::cout << (uniq ? "not empty\\n" : "empty\\n");
     uniq.reset();
     std::cout << (uniq ? "not empty\\n" : "empty\\n");
 }

.SH Output:

 not empty
 [deleter called]
 empty
